Programming II

Course Code
προ-2
ECTS Credits
6
Semester
2nd Semester
Course Category

Core courses

Core courses

Specialization
Core Courses
Course Description
COURSE CONTENTS

Course contents: Pointers and pointer arithmetic. Call by value/reference. Pointers to functions. Dynamic memory allocation. Structs and arrays of structs. Simple data structures (single and double linked lists, circular lists, stacks, queues) and associated functions. Debugging. Recursion. Handling of characters and strings. Random number generation. Command line arguments. Bitwise operations. File I/O (text and binary). Modular programming. The C preprocessor. Useful programs (makefile, profiling, etc). Introduction to network programming using sockets.

LEARNING OUTCOMES

At the end of the course the student will be able to:

  • design algorithmic solutions for demanding problems
  • solve problems by utilizing advanced features of the C language (e.g., complex data types, input and output streams, direct access to main memory through pointers, modular programming, bit manipulation)
  • implement and test solutions to medium-sized real-world problems using C
  • describe algorithmic alternatives (present algorithmic thinking and modular software design skills) that will be useful in solving large-sized problems in other programming languages
ASSESSMENT

Assessment: The course grade will be based on programming projects (possibly involving a personal examination) and/or programming exercises that will jointly account for 50% of the final grade, and a 3- hour written examination that will account for the remaining 50% of the final grade. These percentages may vary (+/-10%) each year. To succeed in this course, a mark of 5 or higher is required in the written exam and in the final grade.